import torch  # 确保导入 torch
from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
from qwen_vl_utils import process_vision_info

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
    "Qwen/Qwen2.5-VL-32B-Instruct", torch_dtype="auto", device_map=None
).to(device)

processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-VL-32B-Instruct")

messages = [        
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "image": "/home/arx/test/rgb.png",
            },
            # {"type": "text", "text": "告诉我这个图片中透明塑料盒所在图片中的位置以这样的格式回答我{“bbox”: [x1, y1, x2, y2], “label”: the name of this object in Chinese}"},
            {"type": "text", "text": "告诉我这个图片中所有的物品所在图片中的所在位置以这个格式回答我{“bbox”: [x1, y1, x2, y2], “label”: the name of this object in Chinese}"},
        ],
    }
]

text = processor.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
    text=[text],
    images=image_inputs,
    videos=video_inputs,
    padding=True,
    return_tensors="pt",
)
inputs = inputs.to(device)

generated_ids = model.generate(**inputs, max_new_tokens=512)
generated_ids_trimmed = [
    out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)

